// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLCommentHint;
// import com.alibaba.druid.sql.ast.SQLLimit_ptr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLOrderBy_ptr;
// import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../../../../ast/statement/SQLDeleteStatement.h"

class MySqlDeleteStatement : virtual public SQLDeleteStatement
{
public:
  BOOL_ptr lowPriority;
  BOOL_ptr quick;
  BOOL_ptr ignore;
  SQLOrderBy_ptr orderBy;
  SQLLimit_ptr limit;
  // for petadata
  BOOL_ptr forceAllPartitions;
  SQLName_ptr forcePartition;

  SQLCommentHint_list_ptr hints;

  BOOL_ptr fulltextDictionary;

  MySqlDeleteStatement();
  SHAREDOBJECT(MySqlDeleteStatement);

  SQLObject_ptr clone();

  SQLCommentHint_list_ptr getHints();

  int getHintsSize();

  BOOL_ptr isLowPriority();

  void setLowPriority(BOOL_ptr lowPriority);

  BOOL_ptr isQuick();

  void setQuick(BOOL_ptr quick);

  BOOL_ptr isIgnore();

  void setIgnore(BOOL_ptr ignore);

  SQLOrderBy_ptr getOrderBy();

  void setOrderBy(SQLOrderBy_ptr orderBy);

  SQLLimit_ptr getLimit();

  void setLimit(SQLLimit_ptr limit);

  BOOL_ptr isFulltextDictionary();

  void setFulltextDictionary(BOOL_ptr fulltextDictionary);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void accept0(MySqlASTVisitor_ptr visitor);

  BOOL_ptr isForceAllPartitions();

  void setForceAllPartitions(BOOL_ptr forceAllPartitions);

  SQLName_ptr getForcePartition();

  void setForcePartition(SQLName_ptr x);

  virtual string_ptr getClass() { return make_string_ptr("MySqlDeleteStatement"); }
};
